Tính chất và cách sử dụng -0

Trong các ngôn ngữ lập trình như C, C#, C++, Java, ta có thể thu được số âm không khi thực hiện một số biểu thức tính toán đặc biệt. Tuy số âm không (−0) và số dương không (+0) là hai số khác nhau, nhưng với các ngôn ngữ này, chúng sẽ bằng nhau khi thực hiện phép so sánh. Do đó, cần chú ý rằng, ta không thể dùng đoạn mã sau (Java) để xác định xem một số có phải là số −0 hay không?

// Giả sử giá trị của a là −0 và b là +0if (a < b){System.out.println("a là số âm không");}

Khi cần xác định xem một số có phải là số âm không hay không, ta có thể sử dụng hàm CopySign() định nghĩa bởi chuẩn IEEE 754. Ta dùng hàm này để sao chép dấu của số −0 sang một số khác không, rồi xác định dấu của −0 thông qua số này.

Ta cũng có thể sử dụng phép chia để phân biệt số âm không và số dương không:

  • x / + 0 = + ∞ {\displaystyle x/+0=+\infty } (x là số dương)
  • x / − 0 = − ∞ {\displaystyle x/-0=-\infty } (x là số dương)

Dưới đây là một số kết quả của các phép toán có số âm không:

  • − 0 / x = − 0 {\displaystyle -0/x=-0} (x là số dương)
  • − 0 / x = + 0 {\displaystyle -0/x=+0} (x là số âm)
  • + 0 / x = − 0 {\displaystyle +0/x=-0} (x là số âm)
  • − 0 / + ∞ = − 0 {\displaystyle -0/+\infty =-0}
  • − 0 / − ∞ = + 0 {\displaystyle -0/-\infty =+0}
  • + 0 / − ∞ = − 0 {\displaystyle +0/-\infty =-0}
  • − 0 × − 0 = + 0 {\displaystyle -0\times -0=+0}
  • − 0 − + 0 = − 0 {\displaystyle -0-+0=-0}
  • − 0 − − 0 = + 0 {\displaystyle -0--0=+0}
  • + 0 + − 0 = + 0 {\displaystyle +0+-0=+0}
  • − 0 + − 0 = − 0 {\displaystyle -0+-0=-0}
  • x × − 0 = − 0 {\displaystyle x\times -0=-0} (x là số dương)

Tài liệu tham khảo

WikiPedia: -0 http://www.fourmilab.ch/documents/univac/minuszero... http://www.javaworld.com/javaworld/jw-10-1996/jw-1... http://msdn.microsoft.com/library/en-us/csspec/htm... http://msdn.microsoft.com/library/en-us/csspec/htm... http://msdn.microsoft.com/library/en-us/script56/h... http://speleotrove.com/decimal/decarith.html http://developers.sun.com/prodtech/cc/articles/sig... http://www.concentric.net/~Ttwang/tech/javafloat.h... https://randomascii.wordpress.com/2012/02/25/compa... https://web.archive.org/web/20050921090806/http://...